/*
** Algo.hh for 304Pacman in /home/mickael/Math
**
** Made by jeremie taboada-alvarez
** Login   <mickael@epitech.net>
**
** Started on  sam. nov.  09 17:04:12 2013 jeremie taboada-alvarez
** Last update sam. nov.  09 17:04:12 2013 jeremie taboada-alvarez
*/

#ifndef					ALGO_HH_
# define				ALGO_HH_

# include				<vector>
# include				<list>
# include				<utility>

class 					Algo
{
private:	//Attributes
	std::vector< std::pair<int*, bool> >	map_;
	int*				ghostCoord_;
	int					pacmanFound_;
	int*				pacmanCoord_;
	int					weight_;
	std::vector<int*>	path_;
public:		//Ctor-Dtor
	Algo(std::vector< std::pair<int*, bool> >, int*);
	~Algo();

public:		//Functions
	bool				setCaseValue(int x, int y);
	bool				checkCaseValue(int x, int y);
	std::vector< std::pair<int*, bool> >	getNumMap();
	std::list<int*>		checkNeighbours(int *coord);
	int*				newCoord(int, int);
	void				findPath(int*);
	bool				checkShortestPath(int, int);
	std::vector<int*>	getPath();
	void				fusion(std::list<int*> &list, std::list<int*> &list2);
	void				getCoords();
};

#endif